# 导入Flask类
import json
import time
import flask
import requests
from flask import request

# 实例化，可视为固定格式
server = flask.Flask(__name__)

# route()方法用于设定路由；类似spring路由配置
@server.route('/aria2',methods=['get'])
def hello_world():
    url=request.args.get('url')
    fname=request.args.get('name')
    #aria2地址
    ariaurl="http://www.cdleixin.club:6800/jsonrpc"
    #最大并发数    
    maxdowns=20
    #jsondata  rpc调用的数据头（固定部分）
    jsondata={
        "jsonrpc":"2.0",
        "id":"QXJpYU5nXzE1NDgzODg5MzhfMC4xMTYyODI2OTExMzMxMzczOA==",
        }          
    reqdata=jsondata
    #aria  取当前并发数的的方法
    reqdata["method"] = "aria2.tellActive"             
    reqdata['params'] = ["token:leixin991426"]
    ret = requests.post(ariaurl, json=reqdata)
    
    curdowns=len(ret.json()["result"])
    while curdowns >= maxdowns:
        print("已达到最大下载数,等待中")
        time.sleep('600')                  #等不到就睡一觉
        ret = requests.post(ariaurl, json=reqdata)
        curdowns=len(ret.json()["result"])
    #aria  增加下载的方法
    reqdata["method"] = "aria2.addUri"            
    reqdata['params'] = ["token:leixin991426",[],{}]
    reqdata['params'][1] = [url]
    reqdata['params'][2] = {"out" : fname,"dir" : "/mnt/3disk"}
    ret = requests.post(ariaurl, json=reqdata)
    d={"code":ret.status_code,"url":url}
    return json.dumps(d,ensure_ascii=False)

server.run(host="0.0.0.0", port=5000)
